﻿using System.Text.Json;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
using AngleSharp;
using Happy8Test;
using MiniExcelLibs;
using Vin.Extension.Framework.Geo.Service;
using Vin.Extension.Redis.Cache;
using Vin.Tool.Core.AssemblyCategory;
using Configuration = AngleSharp.Configuration;

// 获取内嵌资源
var resourceList = AssemblyTool.GetManifestResourceNames();
var resource = AssemblyTool.GetManifestResourceStream("Lua/list.json");

// var tencentParse = new TencentParseGeoService();
// var list = await tencentParse.ParseGeoAsync(File.ReadAllText("list.json"));


Console.ReadKey();

//
// var url = "https://www.cjcp.cn/kaijiang/fckl8mingxi_1.html";
// var context = BrowsingContext.New(Configuration.Default.WithDefaultLoader());
//
// // 打开页面
// var document = await context.OpenAsync(url);
//
// // 获取所有的开奖号码
// var trList = document.QuerySelectorAll(".his_tab tbody tr").ToList();
//
// var hmList = new List<List<string>>();
//
// foreach (var tr in trList)
// {
//     // var qh = tr.Children[0];
//     // var kj = tr.Children[1];
//     var hm = tr.Children[2];
//     // Console.WriteLine($"{qh.TextContent} {kj.TextContent} {hm.TextContent}");
//     var hmText = hm.TextContent.Trim().Split("\n")
//         .Select(m => m.Trim())
//         .Where(m => !string.IsNullOrWhiteSpace(m))
//         .Select(
//             m =>
//             {
//                 var tempList = new List<string>();
//                 // 每两个字符为一组
//                 for (var i = 0; i < m.Length; i += 2)
//                 {
//                     tempList.Add(m.Substring(i, 2));
//                 }
//
//                 return tempList;
//             })
//         // 合并为一个数组
//         .SelectMany(m => m).ToList();
//     hmList.Add(hmText);
// }
//
// // 分组统计
// var groupList = hmList.SelectMany(m => m).GroupBy(m => m).ToList();
//
// // 排序
// var sortList = groupList.OrderByDescending(m => m.Count()).ToList();
//
// var originalColor = Console.ForegroundColor;
// foreach (var item in sortList)
// {
//     // 最新一期是否出现
//     var last = hmList.First().Contains(item.Key) ? "√" : "X";
//     var last2 = hmList.Skip(1).First().Contains(item.Key) ? "√" : "X";
//     var last3 = hmList.Skip(2).First().Contains(item.Key) ? "√" : "X";
//     
//     // √字符增加颜色，其他的不加
//     Console.Write($"{item.Key}-{item.Count()} ");
//     if (last == "√") Console.ForegroundColor = ConsoleColor.Green;
//     Console.Write(last);
//     Console.ForegroundColor = originalColor;
//     if(last2 == "√") Console.ForegroundColor = ConsoleColor.Green;
//     Console.Write(last2);
//     Console.ForegroundColor = originalColor;
//     if(last3 == "√") Console.ForegroundColor = ConsoleColor.Green;
//     Console.Write(last3);
//     
//     Console.ForegroundColor = originalColor;
//     Console.WriteLine();
//     
//     
//     // Console.WriteLine($"{item.Key}-{item.Count()} {last}{last2}{last3}");
// }

//
// var list = new List<object>();
// var pageUrlFormat = "https://www.cjcp.cn/kaijiang/fckl8mingxi_{0}.html";
// var pageCount = 5;
// var context = BrowsingContext.New(Configuration.Default.WithDefaultLoader());
// var startQh = 2020001;
//
// for (int i = 1; i <= pageCount; i++)
// {
//     // 打开页面
//     var document = await context.OpenAsync(string.Format(pageUrlFormat, i));
//
//     // 获取所有的开奖号码
//     var trList = document.QuerySelectorAll(".his_tab tbody tr").ToList();
//
//     foreach (var tr in trList)
//     {
//         var qh = tr.Children[0];
//         var kj = tr.Children[1];
//         var hm = tr.Children[2];
//         var hmText = hm.TextContent.Trim().Split("\n")
//             .Select(m => m.Trim())
//             .Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
//         list.Add(new { qh = qh.TextContent, kj = kj.TextContent, hm = string.Join("", hmText) });
//     }
// }
//
// await MiniExcel.SaveAsAsync("test.xlsx", list, overwriteFile: true);
//
// var k8 = File.Open("k8.json", FileMode.Open);
// var json = await JsonDocument.ParseAsync(k8);
// var root = json.RootElement;
// var list = new List<Happy8>();
// if (root.TryGetProperty("result", out var result))
// {
//     var i = 0;
//     foreach (var item in result.EnumerateArray())
//     {
//         i++;
//         if (i <= 1) continue;
//         var nums = item.GetProperty("red").GetString();
//         var code = item.GetProperty("code").GetString();
//         list.Add(new Happy8()
//         {
//             Issue = code,
//             LotteryNumber = nums!.Split(",").ToList()
//         });
//     }
// }
//
// var totalCount = list.Count;
// var dict = new Dictionary<int, decimal>();
//
// for (var i = 1; i <= 80; i++)
// {
//     var present = list.Count(m => m.LotteryNumber.Contains(i.ToString().PadLeft(2, '0')));
//     dict.Add(i, present / (decimal)totalCount);
// }
//
// var sortList = dict.OrderByDescending(m => m.Value).ToList();
// foreach (var item in sortList)
// {
//     Console.WriteLine($"{item.Key}-{item.Value:P2}");
// }